#include "sortDnaList.h"

DnaSeq * sortDnaList(DnaSeq * list, size_t& size)
{
	DnaSeq * res;

	// vector
	vector<DnaSeq> v (list, list + size);
	vector<DnaSeq>::iterator it;
	res=list;

	// sort
	string sa, sb;
	sort(v.begin(), v.end(),
		[&sa, &sb](DnaSeq a, DnaSeq b) -> bool
		{
			sa = "";
			sb = "";
			sa = conv2string(a,sa);
			sb = conv2string(b,sb);
			return (sa<sb);
		}
	);

	// dédoublonne
	it = unique(v.begin(), v.end(),
		[&sa, &sb](DnaSeq a, DnaSeq b) -> bool
		{
			sa = "";
			sb = "";
			sa = conv2string(a,sa);
			sb = conv2string(b,sb);
			return ( a.len == b.len && sa == sb );
		}
	);

	// Redimensionne le vecteur pour supprimer les doublons
	v.resize( distance(v.begin(),it) );

	// recopie v dans res
	copy(v.begin(), v.end(), res);
	size = v.size();

	return res;
}
